package com.yunxi.module.system.mapper.social;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yunxi.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.module.system.model.social.SocialUserBindDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * <p>
 * 社交账号绑定 mapper
 * </p>
 *
 * @author lidy
 * @since 2024-05-08
 */
@Mapper
public interface SocialUserBindMapper extends BaseMapperX<SocialUserBindDO> {

    /**
     * 根据社交类型和社交用户 ID 删除绑定信息
     *
     * @param userType     社交类型
     * @param socialUserId 社交平台用户ID
     */
    default void deleteByUserTypeAndSocialUserId(Integer userType, Long socialUserId) {
        delete(new LambdaQueryWrapper<SocialUserBindDO>()
                .eq(SocialUserBindDO::getUserType, userType)
                .eq(SocialUserBindDO::getSocialUserId, socialUserId));
    }

    /**
     * 根据用户类型、社交类型、用户 ID 删除绑定信息
     *
     * @param userType   用户类型
     * @param userId     用户 ID
     * @param socialType 社交类型
     */
    default void deleteByUserTypeAndUserIdAndSocialType(Integer userType, Long userId, Integer socialType) {
        delete(new LambdaQueryWrapper<SocialUserBindDO>()
                .eq(SocialUserBindDO::getUserType, userType)
                .eq(SocialUserBindDO::getUserId, userId)
                .eq(SocialUserBindDO::getSocialType, socialType));
    }

    /**
     * 根据 用户编号、用户类型 获得社交用户绑定列表
     *
     * @param userId   用户编号
     * @param userType 用户类型
     * @return 社交用户绑定列表
     */
    default List<SocialUserBindDO> selectListByUserIdAndUserType(Long userId, Integer userType) {
        return selectList(new LambdaQueryWrapper<SocialUserBindDO>()
                .eq(SocialUserBindDO::getUserId, userId)
                .eq(SocialUserBindDO::getUserType, userType));
    }
}
